
package informacja;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import bazy.Baza;

public class ManagerPracownikow {

public static final int OK = 0; //zarejestrowano
public static final int LOGIN_ISTNIEJE = 1;
public static final int BLEDNY_LOGIN = 2;
public static final int BLEDNE_HASLO = 3;
public static final int BRAK_KONTA = 4; //gdy nie ma w bazie takiego pracownika

/*
* Moja wariacja na temat.
* Funkcja sprawdza poprawnosc loginu i hasla zeby ograniczyc powtarzalnosc kodu
*/
private static int sprawdzWarunki(String login, String haslo){
if(login == null || login.length() == 0 || login.length() > 30)
return BLEDNY_LOGIN;
if(haslo == null || haslo.length() == 0 || haslo.length() > 30)
return BLEDNE_HASLO;
return OK;
}
public static int dodajPracownika(String login, String haslo, Stanowisko stan){
int val;

val = sprawdzWarunki(login, haslo);
if(val != OK)
return val;
Connection conn = null;
Statement st = null;
try {
conn = Baza.polacz("dworzec");
st = conn.createStatement();

String sql = "SELECT login FROM pracownicy WHERE login = '" + login + "'";

ResultSet rs = st.executeQuery(sql);
if(rs.next())
return LOGIN_ISTNIEJE;
String sql2 = "INSERT INTO pracownicy VALUES ('" + login + "', '" + haslo + "', '" + stan.toString() + "', '', '')";

st.executeUpdate(sql2);
} catch(SQLException e) {
e.printStackTrace();
}finally{
try{
if(conn != null){
conn.close();
st.close();
}
}catch(Exception e){}
}
return OK;

}
public static PracownikDworca logujPracownika(String login,String haslo){
Connection conn = null;
Statement st = null;
ResultSet rs = null;
String stanowisko = null;
try {
conn = Baza.polacz("dworzec");
st = conn.createStatement();

String sql = "SELECT * FROM pracownicy WHERE login = '" + login + "' and haslo = '" + haslo +"'";

rs = st.executeQuery(sql);
if(rs.next()) {
stanowisko = rs.getString(3);
}
conn.close();
} catch(SQLException e) {
e.printStackTrace();
}finally{
try{
if(conn != null){
conn.close();
st.close();
}
if(rs != null)
rs.close();
}catch(Exception e){}
}
if(stanowisko != null){
try{
Stanowisko stan = Stanowisko.valueOf(stanowisko);
return stan.zwrocPracownika();
}catch(IllegalArgumentException e){}
}
//jak cos poszlo nie tak to zwroci null
//czyli trzeba wypisac na ekran ze logowanie sie nie powiodlo
return null;

}

public static int usunPracownika(String login){
int val = sprawdzWarunki(login, " ");
if(val != OK)
return val;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = Baza.polacz("dworzec");
st = conn.createStatement();

String sql = "SELECT * FROM pracownicy WHERE login = '" + login + "'";

rs = st.executeQuery(sql);
if(rs.next()) {
sql = "DELETE FROM pracownicy where login = '" + login + "'";
st.executeUpdate(sql);
}
conn.close();
} catch(SQLException e) {
e.printStackTrace();
}finally{
try{
if(conn != null){
conn.close();
st.close();
}
if(rs != null)
rs.close();
}catch(Exception e){}
}

return OK;
}

public static PracownikDworca[] pobierzPracownikow(){
Connection conn = null;
Statement st = null;
ResultSet rs = null;
String stanowisko = null;
PracownikDworca[] prac = null;
try {
conn = Baza.polacz("dworzec");
st = conn.createStatement();

String sql = "SELECT * FROM pracownicy";

rs = st.executeQuery(sql);
int c,i = 0;

if(rs.last()){
c = rs.getRow();
prac = new PracownikDworca[c];
rs.beforeFirst();
while(rs.next()){
prac[i] = PracownikDworca.zwrocPracownika(rs.getString(1), rs.getString(2)
, Stanowisko.valueOf(rs.getString(3)), rs.getString(4), rs.getString(5));
i++;
}
}
} catch(SQLException e) {
e.printStackTrace();
}finally{
try{
if(conn != null){
conn.close();
st.close();
}
if(rs != null)
rs.close();
}catch(Exception e){}
}

//jak cos poszlo nie tak to zwroci null
//czyli trzeba wypisac na ekran ze logowanie sie nie powiodlo
return prac;
}
}
 





